
/*
 * Desenvolvimento para WEB
 * 
 * NOME: Vitor Augusto Graciani           RA: 345270
 * NOME: Felipe Petruz Brina              RA: 345083
 * NOME: Diego Zamboni Latance            RA: 344990
 * NOME: Rafael Claudio Domene            RA: 345040
 * NOME: Vinicius Rodrigues de Campos     RA: 345350
 * 
 */
package model;

import auxiliar.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ConsultaEntidadeRelativaDAO {

    private Connection conn;

    public ConsultaEntidadeRelativaDAO() throws DAOException {
        try {
            this.conn = ConnectionFactory.getConnection();

        } catch (Exception e) {
            throw new DAOException("Erro: " + ":\n" + e.getMessage());
        }
    }

    // consulta entidade do banco
    public ArrayList<EntidadeBEAN> consultaRelativa(String entidadeRelativa) throws DAOException {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        ArrayList<EntidadeBEAN> listRelativa = new ArrayList<EntidadeBEAN>();
        try {

            //String da consulta = entidadeAbsoluta
            String SQL = "EXECUTE consultaEntidadeRelativa '" + entidadeRelativa + "'";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            while (rs.next()) {
                
                int mid = Integer.parseInt(rs.getObject("mid").toString());
                String displayname = rs.getObject("displayname").toString();
                String descricao = rs.getObject("description").toString();
                String wikikey = rs.getObject("wikikey").toString();
                String categoria = rs.getObject("categorie").toString();
                String tipo = rs.getObject("type").toString();

                EntidadeBEAN consulta = new EntidadeBEAN(displayname, wikikey, descricao, categoria, tipo, mid);
                
                listRelativa.add(consulta);
            }

            return listRelativa;

        } catch (SQLException sqle) {
            throw new DAOException(sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }
    
        public EntidadeBEAN consultaDetalhesEntidade(int mid) throws DAOException {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        EntidadeBEAN novo = null;
        try {

            String SQL = "EXECUTE consultaEntidadePorMid '" + mid + "'";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            rs.next();
            int mid2 = Integer.parseInt(rs.getObject("mid").toString());
            String displayname = rs.getObject("displayname").toString();
            String descricao = rs.getObject("description").toString();
            String wikikey = rs.getObject("wikikey").toString();
            String categoria = rs.getObject("categorie").toString();
            String tipo = rs.getObject("type").toString();
            

            novo = new EntidadeBEAN(displayname, wikikey, descricao, categoria, tipo, mid2);

            return novo;
        } catch (SQLException sqle) {
            throw new DAOException(sqle);
        } finally {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }
}